package cn.pojo;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

public class CustomerExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public CustomerExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        protected void addCriterionForJDBCDate(String condition, Date value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value.getTime()), property);
        }

        protected void addCriterionForJDBCDate(String condition, List<Date> values, String property) {
            if (values == null || values.size() == 0) {
                throw new RuntimeException("Value list for " + property + " cannot be null or empty");
            }
            List<java.sql.Date> dateList = new ArrayList<java.sql.Date>();
            Iterator<Date> iter = values.iterator();
            while (iter.hasNext()) {
                dateList.add(new java.sql.Date(iter.next().getTime()));
            }
            addCriterion(condition, dateList, property);
        }

        protected void addCriterionForJDBCDate(String condition, Date value1, Date value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value1.getTime()), new java.sql.Date(value2.getTime()), property);
        }

        public Criteria andIdIsNull() {
            addCriterion("id is null");
            return (Criteria) this;
        }

        public Criteria andIdIsNotNull() {
            addCriterion("id is not null");
            return (Criteria) this;
        }

        public Criteria andIdEqualTo(Long value) {
            addCriterion("id =", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotEqualTo(Long value) {
            addCriterion("id <>", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThan(Long value) {
            addCriterion("id >", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdGreaterThanOrEqualTo(Long value) {
            addCriterion("id >=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThan(Long value) {
            addCriterion("id <", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdLessThanOrEqualTo(Long value) {
            addCriterion("id <=", value, "id");
            return (Criteria) this;
        }

        public Criteria andIdIn(List<Long> values) {
            addCriterion("id in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotIn(List<Long> values) {
            addCriterion("id not in", values, "id");
            return (Criteria) this;
        }

        public Criteria andIdBetween(Long value1, Long value2) {
            addCriterion("id between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andIdNotBetween(Long value1, Long value2) {
            addCriterion("id not between", value1, value2, "id");
            return (Criteria) this;
        }

        public Criteria andCusNameIsNull() {
            addCriterion("cusName is null");
            return (Criteria) this;
        }

        public Criteria andCusNameIsNotNull() {
            addCriterion("cusName is not null");
            return (Criteria) this;
        }

        public Criteria andCusNameEqualTo(String value) {
            addCriterion("cusName =", value, "cusName");
            return (Criteria) this;
        }

        public Criteria andCusNameNotEqualTo(String value) {
            addCriterion("cusName <>", value, "cusName");
            return (Criteria) this;
        }

        public Criteria andCusNameGreaterThan(String value) {
            addCriterion("cusName >", value, "cusName");
            return (Criteria) this;
        }

        public Criteria andCusNameGreaterThanOrEqualTo(String value) {
            addCriterion("cusName >=", value, "cusName");
            return (Criteria) this;
        }

        public Criteria andCusNameLessThan(String value) {
            addCriterion("cusName <", value, "cusName");
            return (Criteria) this;
        }

        public Criteria andCusNameLessThanOrEqualTo(String value) {
            addCriterion("cusName <=", value, "cusName");
            return (Criteria) this;
        }

        public Criteria andCusNameLike(String value) {
            addCriterion("cusName like", value, "cusName");
            return (Criteria) this;
        }

        public Criteria andCusNameNotLike(String value) {
            addCriterion("cusName not like", value, "cusName");
            return (Criteria) this;
        }

        public Criteria andCusNameIn(List<String> values) {
            addCriterion("cusName in", values, "cusName");
            return (Criteria) this;
        }

        public Criteria andCusNameNotIn(List<String> values) {
            addCriterion("cusName not in", values, "cusName");
            return (Criteria) this;
        }

        public Criteria andCusNameBetween(String value1, String value2) {
            addCriterion("cusName between", value1, value2, "cusName");
            return (Criteria) this;
        }

        public Criteria andCusNameNotBetween(String value1, String value2) {
            addCriterion("cusName not between", value1, value2, "cusName");
            return (Criteria) this;
        }

        public Criteria andCusLoginNameIsNull() {
            addCriterion("cusLoginName is null");
            return (Criteria) this;
        }

        public Criteria andCusLoginNameIsNotNull() {
            addCriterion("cusLoginName is not null");
            return (Criteria) this;
        }

        public Criteria andCusLoginNameEqualTo(String value) {
            addCriterion("cusLoginName =", value, "cusLoginName");
            return (Criteria) this;
        }

        public Criteria andCusLoginNameNotEqualTo(String value) {
            addCriterion("cusLoginName <>", value, "cusLoginName");
            return (Criteria) this;
        }

        public Criteria andCusLoginNameGreaterThan(String value) {
            addCriterion("cusLoginName >", value, "cusLoginName");
            return (Criteria) this;
        }

        public Criteria andCusLoginNameGreaterThanOrEqualTo(String value) {
            addCriterion("cusLoginName >=", value, "cusLoginName");
            return (Criteria) this;
        }

        public Criteria andCusLoginNameLessThan(String value) {
            addCriterion("cusLoginName <", value, "cusLoginName");
            return (Criteria) this;
        }

        public Criteria andCusLoginNameLessThanOrEqualTo(String value) {
            addCriterion("cusLoginName <=", value, "cusLoginName");
            return (Criteria) this;
        }

        public Criteria andCusLoginNameLike(String value) {
            addCriterion("cusLoginName like", value, "cusLoginName");
            return (Criteria) this;
        }

        public Criteria andCusLoginNameNotLike(String value) {
            addCriterion("cusLoginName not like", value, "cusLoginName");
            return (Criteria) this;
        }

        public Criteria andCusLoginNameIn(List<String> values) {
            addCriterion("cusLoginName in", values, "cusLoginName");
            return (Criteria) this;
        }

        public Criteria andCusLoginNameNotIn(List<String> values) {
            addCriterion("cusLoginName not in", values, "cusLoginName");
            return (Criteria) this;
        }

        public Criteria andCusLoginNameBetween(String value1, String value2) {
            addCriterion("cusLoginName between", value1, value2, "cusLoginName");
            return (Criteria) this;
        }

        public Criteria andCusLoginNameNotBetween(String value1, String value2) {
            addCriterion("cusLoginName not between", value1, value2, "cusLoginName");
            return (Criteria) this;
        }

        public Criteria andCusPasswordIsNull() {
            addCriterion("cusPassword is null");
            return (Criteria) this;
        }

        public Criteria andCusPasswordIsNotNull() {
            addCriterion("cusPassword is not null");
            return (Criteria) this;
        }

        public Criteria andCusPasswordEqualTo(String value) {
            addCriterion("cusPassword =", value, "cusPassword");
            return (Criteria) this;
        }

        public Criteria andCusPasswordNotEqualTo(String value) {
            addCriterion("cusPassword <>", value, "cusPassword");
            return (Criteria) this;
        }

        public Criteria andCusPasswordGreaterThan(String value) {
            addCriterion("cusPassword >", value, "cusPassword");
            return (Criteria) this;
        }

        public Criteria andCusPasswordGreaterThanOrEqualTo(String value) {
            addCriterion("cusPassword >=", value, "cusPassword");
            return (Criteria) this;
        }

        public Criteria andCusPasswordLessThan(String value) {
            addCriterion("cusPassword <", value, "cusPassword");
            return (Criteria) this;
        }

        public Criteria andCusPasswordLessThanOrEqualTo(String value) {
            addCriterion("cusPassword <=", value, "cusPassword");
            return (Criteria) this;
        }

        public Criteria andCusPasswordLike(String value) {
            addCriterion("cusPassword like", value, "cusPassword");
            return (Criteria) this;
        }

        public Criteria andCusPasswordNotLike(String value) {
            addCriterion("cusPassword not like", value, "cusPassword");
            return (Criteria) this;
        }

        public Criteria andCusPasswordIn(List<String> values) {
            addCriterion("cusPassword in", values, "cusPassword");
            return (Criteria) this;
        }

        public Criteria andCusPasswordNotIn(List<String> values) {
            addCriterion("cusPassword not in", values, "cusPassword");
            return (Criteria) this;
        }

        public Criteria andCusPasswordBetween(String value1, String value2) {
            addCriterion("cusPassword between", value1, value2, "cusPassword");
            return (Criteria) this;
        }

        public Criteria andCusPasswordNotBetween(String value1, String value2) {
            addCriterion("cusPassword not between", value1, value2, "cusPassword");
            return (Criteria) this;
        }

        public Criteria andCusEmailIsNull() {
            addCriterion("cusEmail is null");
            return (Criteria) this;
        }

        public Criteria andCusEmailIsNotNull() {
            addCriterion("cusEmail is not null");
            return (Criteria) this;
        }

        public Criteria andCusEmailEqualTo(String value) {
            addCriterion("cusEmail =", value, "cusEmail");
            return (Criteria) this;
        }

        public Criteria andCusEmailNotEqualTo(String value) {
            addCriterion("cusEmail <>", value, "cusEmail");
            return (Criteria) this;
        }

        public Criteria andCusEmailGreaterThan(String value) {
            addCriterion("cusEmail >", value, "cusEmail");
            return (Criteria) this;
        }

        public Criteria andCusEmailGreaterThanOrEqualTo(String value) {
            addCriterion("cusEmail >=", value, "cusEmail");
            return (Criteria) this;
        }

        public Criteria andCusEmailLessThan(String value) {
            addCriterion("cusEmail <", value, "cusEmail");
            return (Criteria) this;
        }

        public Criteria andCusEmailLessThanOrEqualTo(String value) {
            addCriterion("cusEmail <=", value, "cusEmail");
            return (Criteria) this;
        }

        public Criteria andCusEmailLike(String value) {
            addCriterion("cusEmail like", value, "cusEmail");
            return (Criteria) this;
        }

        public Criteria andCusEmailNotLike(String value) {
            addCriterion("cusEmail not like", value, "cusEmail");
            return (Criteria) this;
        }

        public Criteria andCusEmailIn(List<String> values) {
            addCriterion("cusEmail in", values, "cusEmail");
            return (Criteria) this;
        }

        public Criteria andCusEmailNotIn(List<String> values) {
            addCriterion("cusEmail not in", values, "cusEmail");
            return (Criteria) this;
        }

        public Criteria andCusEmailBetween(String value1, String value2) {
            addCriterion("cusEmail between", value1, value2, "cusEmail");
            return (Criteria) this;
        }

        public Criteria andCusEmailNotBetween(String value1, String value2) {
            addCriterion("cusEmail not between", value1, value2, "cusEmail");
            return (Criteria) this;
        }

        public Criteria andCusSexIsNull() {
            addCriterion("cusSex is null");
            return (Criteria) this;
        }

        public Criteria andCusSexIsNotNull() {
            addCriterion("cusSex is not null");
            return (Criteria) this;
        }

        public Criteria andCusSexEqualTo(String value) {
            addCriterion("cusSex =", value, "cusSex");
            return (Criteria) this;
        }

        public Criteria andCusSexNotEqualTo(String value) {
            addCriterion("cusSex <>", value, "cusSex");
            return (Criteria) this;
        }

        public Criteria andCusSexGreaterThan(String value) {
            addCriterion("cusSex >", value, "cusSex");
            return (Criteria) this;
        }

        public Criteria andCusSexGreaterThanOrEqualTo(String value) {
            addCriterion("cusSex >=", value, "cusSex");
            return (Criteria) this;
        }

        public Criteria andCusSexLessThan(String value) {
            addCriterion("cusSex <", value, "cusSex");
            return (Criteria) this;
        }

        public Criteria andCusSexLessThanOrEqualTo(String value) {
            addCriterion("cusSex <=", value, "cusSex");
            return (Criteria) this;
        }

        public Criteria andCusSexLike(String value) {
            addCriterion("cusSex like", value, "cusSex");
            return (Criteria) this;
        }

        public Criteria andCusSexNotLike(String value) {
            addCriterion("cusSex not like", value, "cusSex");
            return (Criteria) this;
        }

        public Criteria andCusSexIn(List<String> values) {
            addCriterion("cusSex in", values, "cusSex");
            return (Criteria) this;
        }

        public Criteria andCusSexNotIn(List<String> values) {
            addCriterion("cusSex not in", values, "cusSex");
            return (Criteria) this;
        }

        public Criteria andCusSexBetween(String value1, String value2) {
            addCriterion("cusSex between", value1, value2, "cusSex");
            return (Criteria) this;
        }

        public Criteria andCusSexNotBetween(String value1, String value2) {
            addCriterion("cusSex not between", value1, value2, "cusSex");
            return (Criteria) this;
        }

        public Criteria andCusPhotoIsNull() {
            addCriterion("cusPhoto is null");
            return (Criteria) this;
        }

        public Criteria andCusPhotoIsNotNull() {
            addCriterion("cusPhoto is not null");
            return (Criteria) this;
        }

        public Criteria andCusPhotoEqualTo(String value) {
            addCriterion("cusPhoto =", value, "cusPhoto");
            return (Criteria) this;
        }

        public Criteria andCusPhotoNotEqualTo(String value) {
            addCriterion("cusPhoto <>", value, "cusPhoto");
            return (Criteria) this;
        }

        public Criteria andCusPhotoGreaterThan(String value) {
            addCriterion("cusPhoto >", value, "cusPhoto");
            return (Criteria) this;
        }

        public Criteria andCusPhotoGreaterThanOrEqualTo(String value) {
            addCriterion("cusPhoto >=", value, "cusPhoto");
            return (Criteria) this;
        }

        public Criteria andCusPhotoLessThan(String value) {
            addCriterion("cusPhoto <", value, "cusPhoto");
            return (Criteria) this;
        }

        public Criteria andCusPhotoLessThanOrEqualTo(String value) {
            addCriterion("cusPhoto <=", value, "cusPhoto");
            return (Criteria) this;
        }

        public Criteria andCusPhotoLike(String value) {
            addCriterion("cusPhoto like", value, "cusPhoto");
            return (Criteria) this;
        }

        public Criteria andCusPhotoNotLike(String value) {
            addCriterion("cusPhoto not like", value, "cusPhoto");
            return (Criteria) this;
        }

        public Criteria andCusPhotoIn(List<String> values) {
            addCriterion("cusPhoto in", values, "cusPhoto");
            return (Criteria) this;
        }

        public Criteria andCusPhotoNotIn(List<String> values) {
            addCriterion("cusPhoto not in", values, "cusPhoto");
            return (Criteria) this;
        }

        public Criteria andCusPhotoBetween(String value1, String value2) {
            addCriterion("cusPhoto between", value1, value2, "cusPhoto");
            return (Criteria) this;
        }

        public Criteria andCusPhotoNotBetween(String value1, String value2) {
            addCriterion("cusPhoto not between", value1, value2, "cusPhoto");
            return (Criteria) this;
        }

        public Criteria andCusHobbyIsNull() {
            addCriterion("cusHobby is null");
            return (Criteria) this;
        }

        public Criteria andCusHobbyIsNotNull() {
            addCriterion("cusHobby is not null");
            return (Criteria) this;
        }

        public Criteria andCusHobbyEqualTo(String value) {
            addCriterion("cusHobby =", value, "cusHobby");
            return (Criteria) this;
        }

        public Criteria andCusHobbyNotEqualTo(String value) {
            addCriterion("cusHobby <>", value, "cusHobby");
            return (Criteria) this;
        }

        public Criteria andCusHobbyGreaterThan(String value) {
            addCriterion("cusHobby >", value, "cusHobby");
            return (Criteria) this;
        }

        public Criteria andCusHobbyGreaterThanOrEqualTo(String value) {
            addCriterion("cusHobby >=", value, "cusHobby");
            return (Criteria) this;
        }

        public Criteria andCusHobbyLessThan(String value) {
            addCriterion("cusHobby <", value, "cusHobby");
            return (Criteria) this;
        }

        public Criteria andCusHobbyLessThanOrEqualTo(String value) {
            addCriterion("cusHobby <=", value, "cusHobby");
            return (Criteria) this;
        }

        public Criteria andCusHobbyLike(String value) {
            addCriterion("cusHobby like", value, "cusHobby");
            return (Criteria) this;
        }

        public Criteria andCusHobbyNotLike(String value) {
            addCriterion("cusHobby not like", value, "cusHobby");
            return (Criteria) this;
        }

        public Criteria andCusHobbyIn(List<String> values) {
            addCriterion("cusHobby in", values, "cusHobby");
            return (Criteria) this;
        }

        public Criteria andCusHobbyNotIn(List<String> values) {
            addCriterion("cusHobby not in", values, "cusHobby");
            return (Criteria) this;
        }

        public Criteria andCusHobbyBetween(String value1, String value2) {
            addCriterion("cusHobby between", value1, value2, "cusHobby");
            return (Criteria) this;
        }

        public Criteria andCusHobbyNotBetween(String value1, String value2) {
            addCriterion("cusHobby not between", value1, value2, "cusHobby");
            return (Criteria) this;
        }

        public Criteria andCusCodeIsNull() {
            addCriterion("cusCode is null");
            return (Criteria) this;
        }

        public Criteria andCusCodeIsNotNull() {
            addCriterion("cusCode is not null");
            return (Criteria) this;
        }

        public Criteria andCusCodeEqualTo(String value) {
            addCriterion("cusCode =", value, "cusCode");
            return (Criteria) this;
        }

        public Criteria andCusCodeNotEqualTo(String value) {
            addCriterion("cusCode <>", value, "cusCode");
            return (Criteria) this;
        }

        public Criteria andCusCodeGreaterThan(String value) {
            addCriterion("cusCode >", value, "cusCode");
            return (Criteria) this;
        }

        public Criteria andCusCodeGreaterThanOrEqualTo(String value) {
            addCriterion("cusCode >=", value, "cusCode");
            return (Criteria) this;
        }

        public Criteria andCusCodeLessThan(String value) {
            addCriterion("cusCode <", value, "cusCode");
            return (Criteria) this;
        }

        public Criteria andCusCodeLessThanOrEqualTo(String value) {
            addCriterion("cusCode <=", value, "cusCode");
            return (Criteria) this;
        }

        public Criteria andCusCodeLike(String value) {
            addCriterion("cusCode like", value, "cusCode");
            return (Criteria) this;
        }

        public Criteria andCusCodeNotLike(String value) {
            addCriterion("cusCode not like", value, "cusCode");
            return (Criteria) this;
        }

        public Criteria andCusCodeIn(List<String> values) {
            addCriterion("cusCode in", values, "cusCode");
            return (Criteria) this;
        }

        public Criteria andCusCodeNotIn(List<String> values) {
            addCriterion("cusCode not in", values, "cusCode");
            return (Criteria) this;
        }

        public Criteria andCusCodeBetween(String value1, String value2) {
            addCriterion("cusCode between", value1, value2, "cusCode");
            return (Criteria) this;
        }

        public Criteria andCusCodeNotBetween(String value1, String value2) {
            addCriterion("cusCode not between", value1, value2, "cusCode");
            return (Criteria) this;
        }

        public Criteria andCusBirthdayIsNull() {
            addCriterion("cusBirthday is null");
            return (Criteria) this;
        }

        public Criteria andCusBirthdayIsNotNull() {
            addCriterion("cusBirthday is not null");
            return (Criteria) this;
        }

        public Criteria andCusBirthdayEqualTo(Date value) {
            addCriterionForJDBCDate("cusBirthday =", value, "cusBirthday");
            return (Criteria) this;
        }

        public Criteria andCusBirthdayNotEqualTo(Date value) {
            addCriterionForJDBCDate("cusBirthday <>", value, "cusBirthday");
            return (Criteria) this;
        }

        public Criteria andCusBirthdayGreaterThan(Date value) {
            addCriterionForJDBCDate("cusBirthday >", value, "cusBirthday");
            return (Criteria) this;
        }

        public Criteria andCusBirthdayGreaterThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("cusBirthday >=", value, "cusBirthday");
            return (Criteria) this;
        }

        public Criteria andCusBirthdayLessThan(Date value) {
            addCriterionForJDBCDate("cusBirthday <", value, "cusBirthday");
            return (Criteria) this;
        }

        public Criteria andCusBirthdayLessThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("cusBirthday <=", value, "cusBirthday");
            return (Criteria) this;
        }

        public Criteria andCusBirthdayIn(List<Date> values) {
            addCriterionForJDBCDate("cusBirthday in", values, "cusBirthday");
            return (Criteria) this;
        }

        public Criteria andCusBirthdayNotIn(List<Date> values) {
            addCriterionForJDBCDate("cusBirthday not in", values, "cusBirthday");
            return (Criteria) this;
        }

        public Criteria andCusBirthdayBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("cusBirthday between", value1, value2, "cusBirthday");
            return (Criteria) this;
        }

        public Criteria andCusBirthdayNotBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("cusBirthday not between", value1, value2, "cusBirthday");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}